home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK1.toast / Development Kits (Disc 1) / QuickDraw 3D / Development / Interfaces / QD3DPascalInterfaces / QD3D.p next >
Encoding:
Text File  |  1996-11-15  |  22.0 KB  |  756 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3D.p
  3.  
  4.      Contains:    Base types for QD3D                            
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.0.6
  7.                  Release:    Universal Interfaces 2.1.5d1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QD3D;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QD3D__}
  28. {$SETC __QD3D__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QD3DIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37.  
  38. {$PUSH}
  39. {$ALIGN POWER}
  40. {$LibExport+}
  41.  
  42. {
  43. *****************************************************************************
  44.  **                                                                             **
  45.  **                                Porting Control                                 **
  46.  **                                                                             **
  47.  ****************************************************************************
  48. }
  49.  
  50. CONST
  51.     gestaltQD3D                    = 'qd3d';
  52.     gestaltQD3DVersion            = 'q3v ';
  53.     gestaltQD3DNotPresent        = 0;
  54.     gestaltQD3DAvailable        = 1;
  55.  
  56. {
  57. *****************************************************************************
  58.  **                                                                             **
  59.  **                                Export Control                                 **
  60.  **                                                                             **
  61.  ****************************************************************************
  62. }
  63. {
  64. *****************************************************************************
  65.  **                                                                             **
  66.  **                                NULL definition                                 **
  67.  **                                                                             **
  68.  ****************************************************************************
  69. }
  70. {
  71. *****************************************************************************
  72.  **                                                                             **
  73.  **                                    Objects                                     **
  74.  **                                                                             **
  75.  ****************************************************************************
  76. }
  77. {
  78.  * Everything in QuickDraw 3D is an OBJECT: a bunch of data with a type,
  79.  * deletion, duplication, and i/o methods.
  80. }
  81.  
  82. TYPE
  83.     TQ3ObjectType                        = FourCharCode;
  84.     TQ3Object = ^LONGINT;
  85. {
  86.  * There are four subclasses of OBJECT:
  87.  *    an ELEMENT, which is data that is placed in a SET
  88.  *    a SHAREDOBJECT, which is reference-counted data that is shared
  89.  *    VIEWs, which maintain state information for an image
  90.  *    a PICK, which used to query a VIEW
  91. }
  92.     TQ3ElementObject                    = TQ3Object;
  93.     TQ3SharedObject                        = TQ3Object;
  94.     TQ3ViewObject                        = TQ3Object;
  95.     TQ3PickObject                        = TQ3Object;
  96. {
  97.  * There are several types of SharedObjects:
  98.  *    RENDERERs, which paint to a drawContext
  99.  *    DRAWCONTEXTs, which are an interface to a device 
  100.  *    SETs, which maintains "mathematical sets" of ELEMENTs
  101.  *    FILEs, which maintain state information for a metafile
  102.  *    SHAPEs, which affect the state of the View
  103.  *    SHAPEPARTs, which contain geometry-specific data about a picking hit
  104.  *    CONTROLLERSTATEs, which hold state of the output channels for a CONTROLLER
  105.  *    TRACKERs, which represent a position and orientation in the user interface
  106.  *  STRINGs, which are abstractions of text string data.
  107.  *    STORAGE, which is an abstraction for stream-based data storage (files, memory)
  108.  *    TEXTUREs, for sharing bitmap information for TEXTURESHADERS
  109.  *    VIEWHINTs, which specifies viewing preferences in FILEs
  110. }
  111.     TQ3RendererObject                    = TQ3SharedObject;
  112.     TQ3DrawContextObject                = TQ3SharedObject;
  113.     TQ3SetObject                        = TQ3SharedObject;
  114.     TQ3FileObject                        = TQ3SharedObject;
  115.     TQ3ShapeObject                        = TQ3SharedObject;
  116.     TQ3ShapePartObject                    = TQ3SharedObject;
  117.     TQ3ControllerStateObject            = TQ3SharedObject;
  118.     TQ3TrackerObject                    = TQ3SharedObject;
  119.     TQ3StringObject                        = TQ3SharedObject;
  120.     TQ3StorageObject                    = TQ3SharedObject;
  121.     TQ3TextureObject                    = TQ3SharedObject;
  122.     TQ3ViewHintsObject                    = TQ3SharedObject;
  123. {
  124.  * There is one types of SET:
  125.  *    ATTRIBUTESETs, which contain ATTRIBUTEs which are inherited 
  126. }
  127.     TQ3AttributeSet                        = TQ3SetObject;
  128.     TQ3AttributeSetPtr                    = ^TQ3AttributeSet;
  129. {
  130.  * There are many types of SHAPEs:
  131.  *    LIGHTs, which affect how the RENDERER draws 3-D cues
  132.  *    CAMERAs, which affects the location and orientation of the RENDERER in space
  133.  *    GROUPs, which may contain any number of SHARED OBJECTS
  134.  *    GEOMETRYs, which are representations of three-dimensional data
  135.  *    SHADERs, which affect how colors are drawn on a geometry
  136.  *    STYLEs, which affect how the RENDERER paints to the DRAWCONTEXT
  137.  *    TRANSFORMs, which affect the coordinate system in the VIEW
  138.  *    REFERENCEs, which are references to objects in FILEs
  139.  *  UNKNOWN, which hold unknown objects read from a metafile.
  140. }
  141.     TQ3GroupObject                        = TQ3ShapeObject;
  142.     TQ3GeometryObject                    = TQ3ShapeObject;
  143.     TQ3ShaderObject                        = TQ3ShapeObject;
  144.     TQ3StyleObject                        = TQ3ShapeObject;
  145.     TQ3TransformObject                    = TQ3ShapeObject;
  146.     TQ3LightObject                        = TQ3ShapeObject;
  147.     TQ3CameraObject                        = TQ3ShapeObject;
  148.     TQ3UnknownObject                    = TQ3ShapeObject;
  149.     TQ3ReferenceObject                    = TQ3ShapeObject;
  150. {
  151.  * For now, there is only one type of SHAPEPARTs:
  152.  *    MESHPARTs, which describe some part of a mesh
  153. }
  154.     TQ3MeshPartObject                    = TQ3ShapePartObject;
  155. {
  156.  * There are three types of MESHPARTs:
  157.  *    MESHFACEPARTs, which describe a face of a mesh
  158.  *    MESHEDGEPARTs, which describe a edge of a mesh
  159.  *    MESHVERTEXPARTs, which describe a vertex of a mesh
  160. }
  161.     TQ3MeshFacePartObject                = TQ3MeshPartObject;
  162.     TQ3MeshEdgePartObject                = TQ3MeshPartObject;
  163.     TQ3MeshVertexPartObject                = TQ3MeshPartObject;
  164. {
  165.  * A DISPLAY Group can be drawn to a view
  166. }
  167.     TQ3DisplayGroupObject                = TQ3GroupObject;
  168. {
  169.  * There are many types of SHADERs:
  170.  *    SURFACESHADERs, which affect how the surface of a geometry is painted
  171.  *    ILLUMINATIONSHADERs, which affect how lights affect the color of a surface
  172. }
  173.     TQ3SurfaceShaderObject                = TQ3ShaderObject;
  174.     TQ3IlluminationShaderObject            = TQ3ShaderObject;
  175. {
  176.  * A handle to an object in a group
  177. }
  178.     TQ3GroupPosition = ^LONGINT;
  179.     TQ3GroupPositionPtr                    = ^TQ3GroupPosition;
  180. {
  181. *****************************************************************************
  182.  **                                                                             **
  183.  **                            Client/Server Things                             **
  184.  **                                                                             **
  185.  ****************************************************************************
  186. }
  187.     TQ3ControllerRef                    = Ptr;
  188. {
  189. *****************************************************************************
  190.  **                                                                             **
  191.  **                            Flags and Switches                                 **
  192.  **                                                                             **
  193.  ****************************************************************************
  194. }
  195.     TQ3Boolean                     = LONGINT;
  196. CONST
  197.     kQ3False                    = {TQ3Boolean}0;
  198.     kQ3True                        = {TQ3Boolean}1;
  199.  
  200.  
  201. TYPE
  202.     TQ3Switch                     = LONGINT;
  203. CONST
  204.     kQ3Off                        = {TQ3Switch}0;
  205.     kQ3On                        = {TQ3Switch}1;
  206.  
  207.  
  208. TYPE
  209.     TQ3Status                     = LONGINT;
  210. CONST
  211.     kQ3Failure                    = {TQ3Status}0;
  212.     kQ3Success                    = {TQ3Status}1;
  213.  
  214.  
  215. TYPE
  216.     TQ3Axis                     = LONGINT;
  217. CONST
  218.     kQ3AxisX                    = {TQ3Axis}0;
  219.     kQ3AxisY                    = {TQ3Axis}1;
  220.     kQ3AxisZ                    = {TQ3Axis}2;
  221.  
  222.  
  223. TYPE
  224.     TQ3PixelType                 = LONGINT;
  225. CONST
  226.     kQ3PixelTypeRGB32            = {TQ3PixelType}0;
  227.     kQ3PixelTypeRGB24            = {TQ3PixelType}1;
  228.     kQ3PixelTypeRGB16            = {TQ3PixelType}2;
  229.     kQ3PixelTypeRGB8            = {TQ3PixelType}3;
  230.  
  231.  
  232. TYPE
  233.     TQ3Endian                     = LONGINT;
  234. CONST
  235.     kQ3EndianBig                = {TQ3Endian}0;
  236.     kQ3EndianLittle                = {TQ3Endian}1;
  237.  
  238.  
  239. TYPE
  240.     TQ3EndCapMasks                 = LONGINT;
  241. CONST
  242.     kQ3EndCapNone                = {TQ3EndCapMasks}0;
  243.     kQ3EndCapMaskTop            = {TQ3EndCapMasks}$01;
  244.     kQ3EndCapMaskBottom            = {TQ3EndCapMasks}$02;
  245.  
  246.  
  247. TYPE
  248.     TQ3EndCap                            = LONGINT;
  249. {
  250. *****************************************************************************
  251.  **                                                                             **
  252.  **                        Point and Vector Definitions                         **
  253.  **                                                                             **
  254.  ****************************************************************************
  255. }
  256.     TQ3Vector2DPtr = ^TQ3Vector2D;
  257.     TQ3Vector2D = RECORD
  258.         x:                        Single;
  259.         y:                        Single;
  260.     END;
  261.  
  262.     TQ3Vector3DPtr = ^TQ3Vector3D;
  263.     TQ3Vector3D = RECORD
  264.         x:                        Single;
  265.         y:                        Single;
  266.         z:                        Single;
  267.     END;
  268.  
  269.     TQ3Point2DPtr = ^TQ3Point2D;
  270.     TQ3Point2D = RECORD
  271.         x:                        Single;
  272.         y:                        Single;
  273.     END;
  274.  
  275.     TQ3Point3DPtr = ^TQ3Point3D;
  276.     TQ3Point3D = RECORD
  277.         x:                        Single;
  278.         y:                        Single;
  279.         z:                        Single;
  280.     END;
  281.  
  282.     TQ3RationalPoint4DPtr = ^TQ3RationalPoint4D;
  283.     TQ3RationalPoint4D = RECORD
  284.         x:                        Single;
  285.         y:                        Single;
  286.         z:                        Single;
  287.         w:                        Single;
  288.     END;
  289.  
  290.     TQ3RationalPoint3DPtr = ^TQ3RationalPoint3D;
  291.     TQ3RationalPoint3D = RECORD
  292.         x:                        Single;
  293.         y:                        Single;
  294.         w:                        Single;
  295.     END;
  296.  
  297. {
  298. *****************************************************************************
  299.  **                                                                             **
  300.  **                                Quaternion                                     **
  301.  **                                                                             **
  302.  ****************************************************************************
  303. }
  304.     TQ3QuaternionPtr = ^TQ3Quaternion;
  305.     TQ3Quaternion = RECORD
  306.         w:                        Single;
  307.         x:                        Single;
  308.         y:                        Single;
  309.         z:                        Single;
  310.     END;
  311.  
  312. {
  313. *****************************************************************************
  314.  **                                                                             **
  315.  **                                Ray Definition                                 **
  316.  **                                                                             **
  317.  ****************************************************************************
  318. }
  319.     TQ3Ray3DPtr = ^TQ3Ray3D;
  320.     TQ3Ray3D = RECORD
  321.         origin:                    TQ3Point3D;
  322.         direction:                TQ3Vector3D;
  323.     END;
  324.  
  325. {
  326. *****************************************************************************
  327.  **                                                                             **
  328.  **                        Parameterization Data Structures                     **
  329.  **                                                                             **
  330.  ****************************************************************************
  331. }
  332.     TQ3Param2DPtr = ^TQ3Param2D;
  333.     TQ3Param2D = RECORD
  334.         u:                        Single;
  335.         v:                        Single;
  336.     END;
  337.  
  338.     TQ3Param3DPtr = ^TQ3Param3D;
  339.     TQ3Param3D = RECORD
  340.         u:                        Single;
  341.         v:                        Single;
  342.         w:                        Single;
  343.     END;
  344.  
  345.     TQ3Tangent2DPtr = ^TQ3Tangent2D;
  346.     TQ3Tangent2D = RECORD
  347.         uTangent:                TQ3Vector3D;
  348.         vTangent:                TQ3Vector3D;
  349.     END;
  350.  
  351.     TQ3Tangent3DPtr = ^TQ3Tangent3D;
  352.     TQ3Tangent3D = RECORD
  353.         uTangent:                TQ3Vector3D;
  354.         vTangent:                TQ3Vector3D;
  355.         wTangent:                TQ3Vector3D;
  356.     END;
  357.  
  358. {
  359. *****************************************************************************
  360.  **                                                                             **
  361.  **                        Polar and Spherical Coordinates                         **
  362.  **                                                                             **
  363.  ****************************************************************************
  364. }
  365.     TQ3PolarPointPtr = ^TQ3PolarPoint;
  366.     TQ3PolarPoint = RECORD
  367.         r:                        Single;
  368.         theta:                    Single;
  369.     END;
  370.  
  371.     TQ3SphericalPointPtr = ^TQ3SphericalPoint;
  372.     TQ3SphericalPoint = RECORD
  373.         rho:                    Single;
  374.         theta:                    Single;
  375.         phi:                    Single;
  376.     END;
  377.  
  378. {
  379. *****************************************************************************
  380.  **                                                                             **
  381.  **                            Color Definition                                 **
  382.  **                                                                             **
  383.  ****************************************************************************
  384. }
  385.     TQ3ColorRGBPtr = ^TQ3ColorRGB;
  386.     TQ3ColorRGB = RECORD
  387.         r:                        Single;
  388.         g:                        Single;
  389.         b:                        Single;
  390.     END;
  391.  
  392.     TQ3ColorARGBPtr = ^TQ3ColorARGB;
  393.     TQ3ColorARGB = RECORD
  394.         a:                        Single;
  395.         r:                        Single;
  396.         g:                        Single;
  397.         b:                        Single;
  398.     END;
  399.  
  400. {
  401. *****************************************************************************
  402.  **                                                                             **
  403.  **                                    Vertices                                 **
  404.  **                                                                             **
  405.  ****************************************************************************
  406. }
  407.     TQ3Vertex3DPtr = ^TQ3Vertex3D;
  408.     TQ3Vertex3D = RECORD
  409.         point:                    TQ3Point3D;
  410.         attributeSet:            TQ3AttributeSet;
  411.     END;
  412.  
  413. {
  414. *****************************************************************************
  415.  **                                                                             **
  416.  **                                    Matrices                                 **
  417.  **                                                                             **
  418.  ****************************************************************************
  419. }
  420.     TQ3Matrix3x3Ptr = ^TQ3Matrix3x3;
  421.     TQ3Matrix3x3 = RECORD
  422.         value:                    ARRAY [0..2,0..2] OF Single;
  423.     END;
  424.  
  425.     TQ3Matrix4x4Ptr = ^TQ3Matrix4x4;
  426.     TQ3Matrix4x4 = RECORD
  427.         value:                    ARRAY [0..3,0..3] OF Single;
  428.     END;
  429.  
  430. {
  431. *****************************************************************************
  432.  **                                                                             **
  433.  **                                Bitmap/Pixmap                                 **
  434.  **                                                                             **
  435.  ****************************************************************************
  436. }
  437.     TQ3PixmapPtr = ^TQ3Pixmap;
  438.     TQ3Pixmap = RECORD
  439.         image:                    Ptr;
  440.         width:                    LONGINT;
  441.         height:                    LONGINT;
  442.         rowBytes:                LONGINT;
  443.         pixelSize:                LONGINT;
  444.         pixelType:                TQ3PixelType;
  445.         bitOrder:                TQ3Endian;
  446.         byteOrder:                TQ3Endian;
  447.     END;
  448.  
  449.     TQ3StoragePixmapPtr = ^TQ3StoragePixmap;
  450.     TQ3StoragePixmap = RECORD
  451.         image:                    TQ3StorageObject;
  452.         width:                    LONGINT;
  453.         height:                    LONGINT;
  454.         rowBytes:                LONGINT;
  455.         pixelSize:                LONGINT;
  456.         pixelType:                TQ3PixelType;
  457.         bitOrder:                TQ3Endian;
  458.         byteOrder:                TQ3Endian;
  459.     END;
  460.  
  461.     TQ3BitmapPtr = ^TQ3Bitmap;
  462.     TQ3Bitmap = RECORD
  463.         image:                    Ptr;
  464.         width:                    LONGINT;
  465.         height:                    LONGINT;
  466.         rowBytes:                LONGINT;
  467.         bitOrder:                TQ3Endian;
  468.     END;
  469.  
  470. FUNCTION Q3Bitmap_Empty(VAR bitmap: TQ3Bitmap): TQ3Status; C;
  471. FUNCTION Q3Bitmap_GetImageSize(width: LONGINT; height: LONGINT): LONGINT; C;
  472. {
  473. *****************************************************************************
  474.  **                                                                             **
  475.  **                        Higher dimension quantities                             **
  476.  **                                                                             **
  477.  ****************************************************************************
  478. }
  479.  
  480. TYPE
  481.     TQ3AreaPtr = ^TQ3Area;
  482.     TQ3Area = RECORD
  483.         min:                    TQ3Point2D;
  484.         max:                    TQ3Point2D;
  485.     END;
  486.  
  487.     TQ3PlaneEquationPtr = ^TQ3PlaneEquation;
  488.     TQ3PlaneEquation = RECORD
  489.         normal:                    TQ3Vector3D;
  490.         constant:                Single;
  491.     END;
  492.  
  493.     TQ3BoundingBoxPtr = ^TQ3BoundingBox;
  494.     TQ3BoundingBox = RECORD
  495.         min:                    TQ3Point3D;
  496.         max:                    TQ3Point3D;
  497.         isEmpty:                TQ3Boolean;
  498.     END;
  499.  
  500.     TQ3BoundingSpherePtr = ^TQ3BoundingSphere;
  501.     TQ3BoundingSphere = RECORD
  502.         origin:                    TQ3Point3D;
  503.         radius:                    Single;
  504.         isEmpty:                TQ3Boolean;
  505.     END;
  506.  
  507. {
  508.  *    The TQ3ComputeBounds flag passed to StartBoundingBox or StartBoundingSphere
  509.  *    calls in the View. It's a hint to the system as to how it should 
  510.  *    compute the bbox of a shape:
  511.  *
  512.  *    kQ3ComputeBoundsExact:    
  513.  *        Vertices of shapes are transformed into world space and
  514.  *        the world space bounding box is computed from them.  Slow!
  515.  *    
  516.  *    kQ3ComputeBoundsApproximate: 
  517.  *        A local space bounding box is computed from a shape's
  518.  *        vertices.  This bbox is then transformed into world space,
  519.  *        and its bounding box is taken as the shape's approximate
  520.  *        bbox.  Fast but the bbox is larger than optimal.
  521. }
  522.     TQ3ComputeBounds             = LONGINT;
  523. CONST
  524.     kQ3ComputeBoundsExact        = {TQ3ComputeBounds}0;
  525.     kQ3ComputeBoundsApproximate    = {TQ3ComputeBounds}1;
  526.  
  527. {
  528. *****************************************************************************
  529.  **                                                                             **
  530.  **                            Object System Types                                 **
  531.  **                                                                             **
  532.  ****************************************************************************
  533. }
  534.  
  535. TYPE
  536.     TQ3ObjectClass = ^LONGINT;
  537.     TQ3MethodType                        = LONGINT;
  538. {
  539.  * Object methods
  540. }
  541. {
  542.  * IO Methods
  543. }
  544.     TQ3FunctionPointer = ProcPtr;  { PROCEDURE TQ3FunctionPointer; C; }
  545.  
  546.     TQ3MetaHandler = ProcPtr;  { FUNCTION TQ3MetaHandler(methodType: TQ3MethodType): TQ3FunctionPointer; C; }
  547.  
  548. {
  549.  * MetaHandler:
  550.  *        When you give a metahandler to QuickDraw 3D, it is called multiple times to
  551.  *        build method tables, and then is thrown away. You are guaranteed that
  552.  *        your metahandler will never be called again after a call that was passed
  553.  *        a metahandler returns.
  554.  *
  555.  *        Your metahandler should contain a switch on the methodType passed to it
  556.  *        and should return the corresponding method as an TQ3FunctionPointer.
  557.  *
  558.  *        IMPORTANT: A metaHandler MUST always "return" a value. If you are
  559.  *        passed a methodType that you do not understand, ALWAYS return NULL.
  560.  *
  561.  *        These types here are prototypes of how your functions should look.
  562. }
  563.     TQ3ObjectUnregisterMethod = ProcPtr;  { FUNCTION TQ3ObjectUnregisterMethod(objectClass: TQ3ObjectClass): TQ3Status; C; }
  564.  
  565. {
  566.  * See QD3DIO.h for the IO method types: 
  567.  *        ObjectReadData, ObjectTraverse, ObjectWrite
  568. }
  569. {
  570. *****************************************************************************
  571.  **                                                                             **
  572.  **                            Object System Macros                             **
  573.  **                                                                             **
  574.  ****************************************************************************
  575. }
  576. {
  577. *****************************************************************************
  578.  **                                                                             **
  579.  **                                Object Types                                 **
  580.  **                                                                             **
  581.  ****************************************************************************
  582. }
  583. {
  584.  * Note:    a call to Q3Foo_GetType will return a value kQ3FooTypeBar
  585.  *            e.g. Q3Shared_GetType(object) returns kQ3SharedTypeShape, etc.
  586. }
  587.  
  588. CONST
  589.     kQ3ObjectTypeInvalid        = 0;
  590.     kQ3ObjectTypeView            = 'view';
  591.     kQ3ObjectTypeElement        = 'elmn';
  592.     kQ3ElementTypeAttribute        = 'eatt';
  593.     kQ3ObjectTypePick            = 'pick';
  594.     kQ3PickTypeWindowPoint        = 'pkwp';
  595.     kQ3PickTypeWindowRect        = 'pkwr';
  596.     kQ3ObjectTypeShared            = 'shrd';
  597.     kQ3SharedTypeRenderer        = 'rddr';
  598.     kQ3RendererTypeWireFrame    = 'wrfr';
  599.     kQ3RendererTypeGeneric        = 'gnrr';
  600.     kQ3RendererTypeInteractive    = 'ctwn';
  601.     kQ3SharedTypeShape            = 'shap';
  602.     kQ3ShapeTypeGeometry        = 'gmtr';
  603.     kQ3GeometryTypeBox            = 'box ';
  604.     kQ3GeometryTypeGeneralPolygon = 'gpgn';
  605.     kQ3GeometryTypeLine            = 'line';
  606.     kQ3GeometryTypeMarker        = 'mrkr';
  607.     kQ3GeometryTypeMesh            = 'mesh';
  608.     kQ3GeometryTypeNURBCurve    = 'nrbc';
  609.     kQ3GeometryTypeNURBPatch    = 'nrbp';
  610.     kQ3GeometryTypePoint        = 'pnt ';
  611.     kQ3GeometryTypePolygon        = 'plyg';
  612.     kQ3GeometryTypePolyLine        = 'plyl';
  613.     kQ3GeometryTypeTriangle        = 'trng';
  614.     kQ3GeometryTypeTriGrid        = 'trig';
  615.     kQ3ShapeTypeShader            = 'shdr';
  616.     kQ3ShaderTypeSurface        = 'sush';
  617.     kQ3SurfaceShaderTypeTexture    = 'txsu';
  618.     kQ3ShaderTypeIllumination    = 'ilsh';
  619.     kQ3IlluminationTypePhong    = 'phil';
  620.     kQ3IlluminationTypeLambert    = 'lmil';
  621.     kQ3IlluminationTypeNULL        = 'nuil';
  622.     kQ3ShapeTypeStyle            = 'styl';
  623.     kQ3StyleTypeBackfacing        = 'bckf';
  624.     kQ3StyleTypeInterpolation    = 'intp';
  625.     kQ3StyleTypeFill            = 'fist';
  626.     kQ3StyleTypePickID            = 'pkid';
  627.     kQ3StyleTypeReceiveShadows    = 'rcsh';
  628.     kQ3StyleTypeHighlight        = 'high';
  629.     kQ3StyleTypeSubdivision        = 'sbdv';
  630.     kQ3StyleTypeOrientation        = 'ofdr';
  631.     kQ3StyleTypePickParts        = 'pkpt';
  632.     kQ3ShapeTypeTransform        = 'xfrm';
  633.     kQ3TransformTypeMatrix        = 'mtrx';
  634.     kQ3TransformTypeScale        = 'scal';
  635.     kQ3TransformTypeTranslate    = 'trns';
  636.     kQ3TransformTypeRotate        = 'rott';
  637.     kQ3TransformTypeRotateAboutPoint = 'rtap';
  638.     kQ3TransformTypeRotateAboutAxis = 'rtaa';
  639.     kQ3TransformTypeQuaternion    = 'qtrn';
  640.     kQ3ShapeTypeLight            = 'lght';
  641.     kQ3LightTypeAmbient            = 'ambn';
  642.     kQ3LightTypeDirectional        = 'drct';
  643.     kQ3LightTypePoint            = 'pntl';
  644.     kQ3LightTypeSpot            = 'spot';
  645.     kQ3ShapeTypeCamera            = 'cmra';
  646.     kQ3CameraTypeOrthographic    = 'orth';
  647.     kQ3CameraTypeViewPlane        = 'vwpl';
  648.     kQ3CameraTypeViewAngleAspect = 'vana';
  649.     kQ3ShapeTypeGroup            = 'grup';
  650.     kQ3GroupTypeDisplay            = 'dspg';
  651.     kQ3DisplayGroupTypeOrdered    = 'ordg';
  652.     kQ3DisplayGroupTypeIOProxy    = 'iopx';
  653.     kQ3GroupTypeLight            = 'lghg';
  654.     kQ3GroupTypeInfo            = 'info';
  655.     kQ3ShapeTypeUnknown            = 'unkn';
  656.     kQ3UnknownTypeText            = 'uktx';
  657.     kQ3UnknownTypeBinary        = 'ukbn';
  658.     kQ3ShapeTypeReference        = 'rfrn';
  659.     kQ3SharedTypeSet            = 'set ';
  660.     kQ3SetTypeAttribute            = 'attr';
  661.     kQ3SharedTypeDrawContext    = 'dctx';
  662.     kQ3DrawContextTypePixmap    = 'dpxp';
  663.     kQ3DrawContextTypeMacintosh    = 'dmac';
  664.     kQ3SharedTypeTexture        = 'txtr';
  665.     kQ3TextureTypePixmap        = 'txpm';
  666.     kQ3SharedTypeFile            = 'file';
  667.     kQ3SharedTypeStorage        = 'strg';
  668.     kQ3StorageTypeMemory        = 'mems';
  669.     kQ3MemoryStorageTypeHandle    = 'hndl';
  670.     kQ3StorageTypeUnix            = 'uxst';
  671.     kQ3UnixStorageTypePath        = 'unix';
  672.     kQ3StorageTypeMacintosh        = 'macn';
  673.     kQ3MacintoshStorageTypeFSSpec = 'macp';
  674.     kQ3SharedTypeString            = 'strn';
  675.     kQ3StringTypeCString        = 'strc';
  676.     kQ3SharedTypeShapePart        = 'sprt';
  677.     kQ3ShapePartTypeMeshPart    = 'spmh';
  678.     kQ3MeshPartTypeMeshFacePart    = 'mfac';
  679.     kQ3MeshPartTypeMeshEdgePart    = 'medg';
  680.     kQ3MeshPartTypeMeshVertexPart = 'mvtx';
  681.     kQ3SharedTypeControllerState = 'ctst';
  682.     kQ3SharedTypeTracker        = 'trkr';
  683.     kQ3SharedTypeViewHints        = 'vwhn';
  684.     kQ3ObjectTypeEndGroup        = 'endg';
  685.  
  686. {
  687. *****************************************************************************
  688.  **                                                                             **
  689.  **                            QuickDraw 3D System Routines                     **
  690.  **                                                                             **
  691.  ****************************************************************************
  692. }
  693. FUNCTION Q3Initialize: TQ3Status; C;
  694. FUNCTION Q3Exit: TQ3Status; C;
  695. FUNCTION Q3IsInitialized: TQ3Boolean; C;
  696. FUNCTION Q3GetVersion(VAR majorRevision: LONGINT; VAR minorRevision: LONGINT): TQ3Status; C;
  697. {
  698. *****************************************************************************
  699.  **                                                                             **
  700.  **                            ObjectClass Routines                             **
  701.  **                                                                             **
  702.  ****************************************************************************
  703. }
  704. FUNCTION Q3ObjectClass_Unregister(objectClass: TQ3ObjectClass): TQ3Status; C;
  705. {
  706. *****************************************************************************
  707.  **                                                                             **
  708.  **                                Object Routines                                 **
  709.  **                                                                             **
  710.  ****************************************************************************
  711. }
  712. FUNCTION Q3Object_Dispose(object: TQ3Object): TQ3Status; C;
  713. FUNCTION Q3Object_Duplicate(object: TQ3Object): TQ3Object; C;
  714. FUNCTION Q3Object_Submit(object: TQ3Object; view: TQ3ViewObject): TQ3Status; C;
  715. FUNCTION Q3Object_IsDrawable(object: TQ3Object): TQ3Boolean; C;
  716. FUNCTION Q3Object_IsWritable(object: TQ3Object; theFile: TQ3FileObject): TQ3Boolean; C;
  717. {
  718. *****************************************************************************
  719.  **                                                                             **
  720.  **                            Object Type Routines                             **
  721.  **                                                                             **
  722.  ****************************************************************************
  723. }
  724. FUNCTION Q3Object_GetType(object: TQ3Object): TQ3ObjectType; C;
  725. FUNCTION Q3Object_GetLeafType(object: TQ3Object): TQ3ObjectType; C;
  726. FUNCTION Q3Object_IsType(object: TQ3Object; theType: TQ3ObjectType): TQ3Boolean; C;
  727. {
  728. *****************************************************************************
  729.  **                                                                             **
  730.  **                            Shared Object Routines                             **
  731.  **                                                                             **
  732.  ****************************************************************************
  733. }
  734. FUNCTION Q3Shared_GetType(sharedObject: TQ3SharedObject): TQ3ObjectType; C;
  735. FUNCTION Q3Shared_GetReference(sharedObject: TQ3SharedObject): TQ3SharedObject; C;
  736. {
  737. *****************************************************************************
  738.  **                                                                             **
  739.  **                                Shape Routines                                 **
  740.  **                                                                             **
  741.  ****************************************************************************
  742. }
  743. FUNCTION Q3Shape_GetType(shape: TQ3ShapeObject): TQ3ObjectType; C;
  744. FUNCTION Q3Shape_GetSet(shape: TQ3ShapeObject; VAR theSet: TQ3SetObject): TQ3Status; C;
  745. FUNCTION Q3Shape_SetSet(shape: TQ3ShapeObject; theSet: TQ3SetObject): TQ3Status; C;
  746. {$ALIGN RESET}
  747. {$POP}
  748.  
  749. {$SETC UsingIncludes := QD3DIncludes}
  750.  
  751. {$ENDC} {__QD3D__}
  752.  
  753. {$IFC NOT UsingIncludes}
  754.  END.
  755. {$ENDC}
  756.